Process VS Thread
行程:
適合一次最多一個工作(unix shell)
優點:
缺點:
- 不同行程不會共享記憶體
- 行程間一部份停止,整個行程會一起停
- 行程創建和內容轉換經濟成本高
- 可擴展性低
執行緒:
適合一次可多個工作
平行(Parallelism)VS並行(Concurrency)
平行(Parallelism)
-
資料平行(data parallelism):每個核心執行相同操作
-
任務平行(task parallelism):每個核心執行不同操作
-
並行(Concurrency)
優點:
- 應答:程式一部份停止,其他部分能持續運作
-
資源分享:執行緒間公用行程資源,比共用記憶體和訊息分享還快
- 經濟:比行程便宜
- 可擴展性:可讓不同CPU平行執行
缺點:
User Thread VS kernel Thread
User Thread
使用者層次
- 三種主要執行緒程式庫:
- POSIX Pthreads
- Win32執行緒
- Java執行緒
優點:
缺點:
kernel Thread
kernel管理
優點:
缺點:
管理較慢,成本高
多對一
優缺點同於User Thread
一對一
優缺點同於 kernel Thread
多對多
許多使用者執行緒對應到許多核心執行緒
二層模式
和多對多相似,但允許一個使用者執行緒被綁到核心執行緒
隱式執行緒(Implicit Threading)
執行緒池(Thread Pool)
先產生一些執行緒放入池中,等待工作
- 現成的 Thread,執行較快
-
Thread數目限於pool
- 執行和產生分開
OpenMP
Grand Central Dispatch
區塊放入分派佇列
-
串列:每一個行程有自己的串列佇列,稱為主佇列
-
並行:FIFO的順序移除,但一次可以移除數個
信號(signal)
通知行程,一個特殊的事件已經發生了,預設信號處理器(default signal handler)處理信號
目標執行緒(target thread)
被取消的執行緒,執行緒抵達取消點(cancellation point),後清除處理器(cleanup handle)會被呼叫
- 非同步取消(asynchronous cancellation)立即終止目標執行緒
- 延遲取消(deferred cancellation)允許目標執行緒週期地檢查它
執行緒的局部儲存(Thread-local storage , TLS)
排班程式活化作用
輕量級行程(lightweight process, LWP)